今天原本主題是「從最佳粒子提取訓練後網路權重」,當初不知道為什麼會打這個題目,因為其實這個步驟非常簡單,就只需要把粒子群裡面的最佳解(Group Best, G-Best)拿出來就是訓練後的權重了哈哈。我今天想來談的事情是參數牆,我覺得這個或許對於訂閱我的朋友來說,你們在做類神經網路會比較有幫助。
題外話,慢慢發現自己一天能無壓力打出來的文章文字量,或許剛開始我一頭熱打比較詳細,但要持續堅持發現好多東西都沒有準備好,要準備好太花時間,所以明年鐵人賽我應該會先準備好內容,再提供更好的文章。
什麼是參數牆呢?參數牆是對於參數的邊界限制條件的一種俗稱,根源來自於粒子群演算法。簡單來說如果你有一組參數 (a,b) 分別 a 與 b 都要介在 [0,1] 之間,那 x = 0, 1 與 y = 0, 1 這四條線就是參數牆,參數調整到這裡就撞牆了,不能超過他。
實務上,我們很常會遇到參數撞牆的情況,例如我在做類神經網路我用啟發式演算法優化權重,但是權重我限定在 0 到 1 之間,那麼不小心可能會修改到權重超過 1 ,因此要對這樣的參數做一個處理,這就是所謂的「邊界返回調整」
實務上邊界返回調整有三種主要方式,第一種是所謂的吸收牆:
第二種是所謂的反射牆,也就是說它的速度會直接相反,然後在下一輪回合維持一樣的大小但相反方向衝回參數空間:
第三種是所謂的無視牆,也就是飛出去參數空間的就不要他了:
實務上我們偏向先採用無視牆,原因是無視牆可以檢驗你的參數空間的複雜度,如果複雜度太高很容易會噴出參數空間,然後放棄例子就能釋放計算空間,因為通常會把不同粒子跑在平行運算的不同的核心上面,如果結果還不錯,我們會改用第一種方式,看看邊界條件影響會不會很大,通常邊界影響會蠻大的,所以我們會跑很多次第一種參數牆(吸收牆),通常不會使用第二種,除非你的參數空間複雜度不高,或是你的學習率不高才會使用。